#ifndef CheckerMaterial_h
#define CheckerMaterial_h

#include "Material.h"
#include "Point.h"
#include "Vector.h"

class CheckerMaterial : public Material {
 public:
  CheckerMaterial(const Point& origin, const Vector& v1, const Vector& v2,
                  Material* matl0, Material* matl1);
  CheckerMaterial(const Point& origin, const Vector& v1, const Vector& v2, const Vector& v3,
                  Material* matl0, Material* matl1);
  virtual ~CheckerMaterial();

  virtual void shade(Color& result, const RenderContext& context, const Ray& ray,
                     const HitRecord& hit, const Color& atten, int depth) const;

 private:
  CheckerMaterial(const CheckerMaterial&);
  CheckerMaterial& operator=(const CheckerMaterial&);

  Point origin;
  Vector v1, v2, v3;
  Material* matls[3];
};

#endif
